﻿/*
 Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.dialog.add("scaytcheck",
    function(j) {
        function w() {
            return"undefined" != typeof document.forms["optionsbar_" + a]
                ? document.forms["optionsbar_" + a].options
                : []
        }

        function x(b, a) {
            if (b) {
                var e = b.length;
                if (void 0 == e) b.checked = b.value == a.toString();
                else for (var d = 0; d < e; d++) b[d].checked = !1, b[d].value == a.toString() && (b[d].checked = !0)
            }
        }

        function n(b) { f.getById("dic_message_" + a).setHtml('<span style="color:red;">' + b + "</span>") }

        function o(b) { f.getById("dic_message_" + a).setHtml('<span style="color:blue;">' + b + "</span>") }

        function p(b) {
            for (var b = ("" + b).split(","), a = 0, e = b.length; a < e; a += 1)
                f.getById(b[a]).$.style.display = "inline"
        }

        function q(b) {
            for (var b = ("" + b).split(","), a = 0, e = b.length; a < e; a += 1)
                f.getById(b[a]).$.style.display = "none"
        }

        function r(b) { f.getById("dic_name_" + a).$.value = b }

        var s = !0,
            h,
            f = CKEDITOR.document,
            a = j.name,
            l = CKEDITOR.plugins.scayt.getUiTabs(j),
            g,
            t = [],
            u = 0,
            m = ["dic_create_" + a + ",dic_restore_" + a, "dic_rename_" + a + ",dic_delete_" + a],
            v = ["mixedCase", "mixedWithDigits", "allCaps", "ignoreDomainNames"];
        g = j.lang.scayt;
        var z =
            [
                {
                    id: "options",
                    label: g.optionsTab,
                    elements: [
                        {
                            type: "html",
                            id: "options",
                            html: '<form name="optionsbar_' +
                                a +
                                '"><div class="inner_options">\t<div class="messagebox"></div>\t<div style="display:none;">\t\t<input type="checkbox" name="options"  id="allCaps_' +
                                a +
                                '" />\t\t<label style = "display: inline" for="allCaps" id="label_allCaps_' +
                                a +
                                '"></label>\t</div>\t<div style="display:none;">\t\t<input name="options" type="checkbox"  id="ignoreDomainNames_' +
                                a +
                                '" />\t\t<label style = "display: inline" for="ignoreDomainNames" id="label_ignoreDomainNames_' +
                                a +
                                '"></label>\t</div>\t<div style="display:none;">\t<input name="options" type="checkbox"  id="mixedCase_' +
                                a +
                                '" />\t\t<label style = "display: inline" for="mixedCase" id="label_mixedCase_' +
                                a +
                                '"></label>\t</div>\t<div style="display:none;">\t\t<input name="options" type="checkbox"  id="mixedWithDigits_' +
                                a +
                                '" />\t\t<label style = "display: inline" for="mixedWithDigits" id="label_mixedWithDigits_' +
                                a +
                                '"></label>\t</div></div></form>'
                        }
                    ]
                }, {
                    id: "langs",
                    label: g.languagesTab,
                    elements: [
                        {
                            type: "html",
                            id: "langs",
                            html: '<form name="languagesbar_' +
                                a +
                                '"><div class="inner_langs">\t<div class="messagebox"></div>\t   <div style="float:left;width:45%;margin-left:5px;" id="scayt_lcol_' +
                                a +
                                '" ></div>   <div style="float:left;width:45%;margin-left:15px;" id="scayt_rcol_' +
                                a +
                                '"></div></div></form>'
                        }
                    ]
                }, {
                    id: "dictionaries",
                    label: g.dictionariesTab,
                    elements: [
                        {
                            type: "html",
                            style: "",
                            id: "dictionaries",
                            html: '<form name="dictionarybar_' +
                                a +
                                '"><div class="inner_dictionary" style="text-align:left; white-space:normal; width:320px; overflow: hidden;">\t<div style="margin:5px auto; width:95%;white-space:normal; overflow:hidden;" id="dic_message_' +
                                a +
                                '"> </div>\t<div style="margin:5px auto; width:95%;white-space:normal;">        <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>\t\t<span class="cke_dialog_ui_labeled_content" >\t\t\t<div class="cke_dialog_ui_input_text">\t\t\t\t<input id="dic_name_' +
                                a +
                                '" type="text" class="cke_dialog_ui_input_text" style = "height: 25px; background: none; padding: 0;"/>\t\t</div></span></div>\t\t<div style="margin:5px auto; width:95%;white-space:normal;">\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create_' +
                                a +
                                '">\t\t\t\t</a>\t\t\t<a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete_' +
                                a +
                                '">\t\t\t\t</a>\t\t\t<a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename_' +
                                a +
                                '">\t\t\t\t</a>\t\t\t<a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore_' +
                                a +
                                '">\t\t\t\t</a>\t\t</div>\t<div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info_' +
                                a +
                                '"></div></div></form>'
                        }
                    ]
                }, {
                    id: "about",
                    label: g.aboutTab,
                    elements: [
                        {
                            type: "html",
                            id: "about",
                            style: "margin: 5px 5px;",
                            html: '<div id="scayt_about_' + a + '"></div>'
                        }
                    ]
                }
            ],
            B = {
                title: g.title,
                minWidth: 360,
                minHeight: 220,
                onShow: function() {
                    var b = this;
                    b.data = j.fire("scaytDialog", {});
                    b.options = b.data.scayt_control.option();
                    b.chosed_lang = b.sLang = b.data.scayt_control.sLang;
                    if (!b.data || !b.data.scayt || !b.data.scayt_control)
                        alert("Error loading application service"), b.hide();
                    else {
                        var a = 0;
                        s
                            ? b.data.scayt.getCaption(j.langCode || "en",
                                function(e) {
                                    0 < a++ ||
                                    (h = e, A.apply(b),
                                        y.apply(b), s = !1)
                                })
                            : y.apply(b);
                        b.selectPage(b.data.tab)
                    }
                },
                onOk: function() {
                    var a = this.data.scayt_control;
                    a.option(this.options);
                    a.setLang(this.chosed_lang);
                    a.refresh()
                },
                onCancel: function() {
                    var b = w(), f;
                    for (f in b) b[f].checked = !1;
                    b = "undefined" != typeof document.forms["languagesbar_" + a]
                        ? document.forms["languagesbar_" + a].scayt_lang
                        : [];
                    x(b, "")
                },
                contents: t
            };
        CKEDITOR.plugins.scayt.getScayt(j);
        for (g = 0; g < l.length; g++) 1 == l[g] && (t[t.length] = z[g]);
        1 == l[2] && (u = 1);
        var A = function() {
                function b(b) {
                    var c = f.getById("dic_name_" +
                        a).getValue();
                    if (!c) return n(" Dictionary name should not be empty. "), !1;
                    try {
                        var d = b.data.getTarget().getParent(), e = /(dic_\w+)_[\w\d]+/.exec(d.getId())[1];
                        j[e].apply(null, [d, c, m])
                    } catch (C) {
                        n(" Dictionary error. ")
                    }
                    return!0
                }

                var k = this,
                    e = k.data.scayt.getLangList(),
                    d = ["dic_create", "dic_delete", "dic_rename", "dic_restore"],
                    g = [],
                    i = [],
                    c;
                if (u) {
                    for (c = 0; c < d.length; c++)
                        g[c] = d[c] + "_" + a, f.getById(g[c])
                            .setHtml('<span class="cke_dialog_ui_button">' + h["button_" + d[c]] + "</span>");
                    f.getById("dic_info_" + a).setHtml(h.dic_info)
                }
                if (1 ==
                    l[0])
                    for (c in v)
                        d = "label_" + v[c], g = f.getById(d + "_" + a), "undefined" != typeof g &&
                            ("undefined" != typeof h[d] && "undefined" != typeof k.options[v[c]]) &&
                            (g.setHtml(h[d]), g.getParent().$.style.display = "block");
                d = '<p><img src="' +
                    window.scayt.getAboutInfo().logoURL +
                    '" /></p><p>' +
                    h.version +
                    window.scayt.getAboutInfo().version.toString() +
                    "</p><p>" +
                    h.about_throwt_copy +
                    "</p>";
                f.getById("scayt_about_" + a).setHtml(d);
                d = function(a, b) {
                    var c = f.createElement("label");
                    c.setAttribute("for", "cke_option" + a);
                    c.setStyle("display",
                        "inline");
                    c.setHtml(b[a]);
                    k.sLang == a && (k.chosed_lang = a);
                    var d = f.createElement("div"),
                        e = CKEDITOR.dom.element.createFromHtml(
                            '<input class = "cke_dialog_ui_radio_input" id="cke_option' +
                            a +
                            '" type="radio" ' +
                            (k.sLang == a ? 'checked="checked"' : "") +
                            ' value="' +
                            a +
                            '" name="scayt_lang" />');
                    e.on("click",
                        function() {
                            this.$.checked = true;
                            k.chosed_lang = a
                        });
                    d.append(e);
                    d.append(c);
                    return{ lang: b[a], code: a, radio: d }
                };
                if (1 == l[1]) {
                    for (c in e.rtl) i[i.length] = d(c, e.ltr);
                    for (c in e.ltr) i[i.length] = d(c, e.ltr);
                    i.sort(function(a,
                        b) {
                        return b.lang > a.lang ? -1 : 1
                    });
                    e = f.getById("scayt_lcol_" + a);
                    d = f.getById("scayt_rcol_" + a);
                    for (c = 0; c < i.length; c++) (c < i.length / 2 ? e : d).append(i[c].radio)
                }
                var j = {
                    dic_create: function(a, b, c) {
                        var d = c[0] + "," + c[1], e = h.err_dic_create, f = h.succ_dic_create;
                        window.scayt.createUserDictionary(b,
                            function(a) {
                                q(d);
                                p(c[1]);
                                f = f.replace("%s", a.dname);
                                o(f)
                            },
                            function(a) {
                                e = e.replace("%s", a.dname);
                                n(e + "( " + (a.message || "") + ")")
                            })
                    },
                    dic_rename: function(a, b) {
                        var c = h.err_dic_rename || "", d = h.succ_dic_rename || "";
                        window.scayt.renameUserDictionary(b,
                            function(a) {
                                d = d.replace("%s", a.dname);
                                r(b);
                                o(d)
                            },
                            function(a) {
                                c = c.replace("%s", a.dname);
                                r(b);
                                n(c + "( " + (a.message || "") + " )")
                            })
                    },
                    dic_delete: function(a, b, c) {
                        var d = c[0] + "," + c[1], e = h.err_dic_delete, f = h.succ_dic_delete;
                        window.scayt.deleteUserDictionary(function(a) {
                                f = f.replace("%s", a.dname);
                                q(d);
                                p(c[0]);
                                r("");
                                o(f)
                            },
                            function(a) {
                                e = e.replace("%s", a.dname);
                                n(e)
                            })
                    }
                };
                j.dic_restore = k.dic_restore ||
                    function(a, b, c) {
                        var d = c[0] + "," + c[1], e = h.err_dic_restore, f = h.succ_dic_restore;
                        window.scayt.restoreUserDictionary(b,
                            function(a) {
                                f =
                                    f.replace("%s", a.dname);
                                q(d);
                                p(c[1]);
                                o(f)
                            },
                            function(a) {
                                e = e.replace("%s", a.dname);
                                n(e)
                            })
                    };
                i = (m[0] + "," + m[1]).split(",");
                c = 0;
                for (e = i.length; c < e; c += 1) if (d = f.getById(i[c])) d.on("click", b, this)
            },
            y = function() {
                var b = this;
                if (1 == l[0])
                    for (var g = w(), e = 0, d = g.length; e < d; e++) {
                        var h = g[e].id, i = f.getById(h);
                        if (i && (g[e].checked = !1, 1 == b.options[h.split("_")[0]] && (g[e].checked = !0), s))
                            i.on("click", function() { b.options[this.getId().split("_")[0]] = this.$.checked ? 1 : 0 })
                    }
                1 == l[1] && (g = f.getById("cke_option" + b.sLang), x(g.$, b.sLang));
                u &&
                (window.scayt.getNameUserDictionary(function(b) {
                        b = b.dname;
                        q(m[0] + "," + m[1]);
                        if (b) {
                            f.getById("dic_name_" + a).setValue(b);
                            p(m[1])
                        } else p(m[0])
                    },
                    function() { f.getById("dic_name_" + a).setValue("") }), o(""))
            };
        return B
    });
